import { IsArray, IsNotEmpty, IsOptional, IsString, ValidateNested } from 'class-validator';
import { Type } from 'class-transformer';

/**
 * 批量事件DTO - 用于一次性接收多个事件
 */
export class EventDto {
  @IsString()
  @IsNotEmpty()
  type: string;

  @IsString()
  @IsOptional()
  category?: string;

  @IsString()
  @IsOptional()
  action?: string;

  @IsString()
  @IsOptional()
  label?: string;

  @IsOptional()
  value?: any;

  @IsString()
  @IsOptional()
  timestamp?: string;

  @IsOptional()
  customData?: any;
}

export class BatchEventsDto {
  @IsString()
  @IsNotEmpty()
  trackingId: string;

  @IsString()
  @IsNotEmpty()
  sessionId: string;

  @IsString()
  @IsOptional()
  url?: string;

  @IsString()
  @IsOptional()
  title?: string;

  @IsOptional()
  sessionDuration?: number;

  @IsArray()
  @ValidateNested({ each: true })
  @Type(() => EventDto)
  events: EventDto[];
} 